﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BE;
using BL;
namespace UI.Tesoreria
{
    public partial class FrmTrabajador : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
              

                Empleado empleado=(Empleado) Session["ModificarEmpleado"];
                IniciarTabla();
                CargarCargos();
                CargarProgramas();
                ViewState["IDTabla"] = 1;

                if (empleado != null)
                {
                    RecuperarTrabajador(empleado);
                }

            }
        }



        private void RecuperarTrabajador(Empleado empleado)
        {
            IDSN.Text = empleado.IDSN.ToString();
            txtCodigo.Text = empleado.Codigo;
            txtApellidoPaterno.Text = empleado.ApellidoPaterno;
            txtApellidoMaterno.Text = empleado.ApellidoMaterno;
            txtNombres.Text = empleado.Nombres;
            comboCargo.SelectedIndex = empleado.IDCargo;
            DataTable dt = ViewState["TablaTemporal"] as DataTable;
            foreach (Empleado_Programas item in empleado.ItemProgramas)
            {
                DataRow datarow = dt.NewRow();

                Int32 indice = 0;
                indice = ((Int32)ViewState["IDTabla"]) + 1;

                datarow["id"] = item.IDTabla;
                datarow["Programa"] = item.IDPrograma;
                datarow["Sueldo"] = item.Sueldo;
                dt.Rows.Add(datarow);
                
            }
            GridDetalle.DataSource = dt;
            GridDetalle.DataBind();
        }


        protected void btnNuevo_Click(object sender, ImageClickEventArgs e)
        {
            LabelError.Text = "";
            try
            {
                GrabarGrillaEnDT();
                DataTable dt = ViewState["TablaTemporal"] as DataTable;
                DataRow row = dt.NewRow();

                Int32 indice=0;
                indice = ((Int32) ViewState["IDTabla"])+1;

                ViewState["IDTabla"] = indice;
                row["id"] = indice.ToString();
                dt.Rows.Add(row);
                GridDetalle.DataSource = dt;
                GridDetalle.DataBind();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }


        private void CargarCargos(){
            LabelError.Text = "";
            try
            {
                Empleado_BL emp = new Empleado_BL();
                List<Cargo> lista = emp.ObtenerCargos();
                comboCargo.DataSource = lista;
                comboCargo.DataTextField = "descripcion";
                comboCargo.DataValueField = "IDCargo";
                comboCargo.DataBind();
                comboCargo.Items.Insert(0, "--SELECCIONE UN CARGO--");
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
           
        }
        
        private void CargarProgramas(){
            LabelError.Text = "";
            try
            {
                Empleado_BL empleadobl = new Empleado_BL();
                List<BE.Programas> programas = empleadobl.ObtenerProgramas();
                ViewState["Programas"] = programas;
            
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }

        private void IniciarTabla(){
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(System.String));
            dt.Columns.Add("Programa", typeof(System.String));
            dt.Columns.Add("Sueldo", typeof(System.Decimal));
            ViewState["TablaTemporal"] = dt;
        }



        private void GrabarItemACpventa()
        {
            LabelError.Text = "";
            try
            {



            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }

        }

        private void GrabarGrillaEnDT()
        {
            DataTable dt = ViewState["TablaTemporal"] as DataTable;
            dt.Rows.Clear();
            foreach (GridViewRow row in GridDetalle.Rows)
            {
                String id = (String)GridDetalle.DataKeys[row.RowIndex].Value;
                TextBox txtPrograma = row.FindControl("txtPrograma") as TextBox;
                DropDownList drp = row.FindControl("comboProgramasItem") as DropDownList;
                TextBox txtMonto = row.FindControl("txtSueldo") as TextBox;

                DataRow datarow = dt.NewRow();
                datarow["id"] = id;
                datarow["Programa"] = drp.SelectedItem.Value;
                datarow["Sueldo"] = (txtMonto.Text != "") ? Convert.ToDecimal(txtMonto.Text):0;

                dt.Rows.Add(datarow);
            }
        }

        protected void GridDetalle_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {

        }

 

        protected void GridDetalle_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            GrabarGrillaEnDT();
            String llave = (String)GridDetalle.DataKeys[e.RowIndex].Value;
            DataTable dt = ViewState["TablaTemporal"] as DataTable;

            foreach (DataRow item in dt.Rows)
            {
                String data=item.ItemArray[0].ToString();

                if (item["id"].ToString().Equals(llave)) { 

                dt.Rows.Remove(item);
                break;
                }
            }

            

            GridDetalle.DataSource = dt;
            GridDetalle.DataBind();


        }

        protected void GridDetalle_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            TextBox txtPrograma = e.Row.FindControl("txtPrograma") as TextBox;
            DropDownList drp = e.Row.FindControl("comboProgramasItem") as DropDownList;
            if (drp != null)
            {

                drp.DataSource = ViewState["Programas"];
                drp.DataTextField = "Descripcion";
                drp.DataValueField = "ID";
                drp.DataBind();
                drp.Items.Insert(0, "--Seleccionar Un Programa--");
                drp.SelectedIndex = drp.Items.IndexOf(drp.Items.FindByValue(txtPrograma.Text));
            }
        }

        protected void btnGuardarTrabajador_Click(object sender, ImageClickEventArgs e)
        {
            LabelError.Text = "";   
            try
            {
                GrabarGrillaEnDT();
                Empleado empleado = new Empleado();
                empleado.Codigo = txtCodigo.Text;
                empleado.ApellidoMaterno = txtApellidoMaterno.Text;
                empleado.ApellidoPaterno = txtApellidoPaterno.Text;
                empleado.Nombres = txtNombres.Text;
                empleado.IDCargo = Convert.ToInt32(comboCargo.SelectedItem.Value);


                DataTable dt = ViewState["TablaTemporal"] as DataTable;

                foreach (DataRow item in dt.Rows)
                {
                    Empleado_Programas empleadoPrograma = empleado.AgregarItem();
                    if (IDSN.Text != "")
                    {
                        empleadoPrograma.IDTabla = Convert.ToInt32(item["ID"]);
                    }
                    
                    empleadoPrograma.IDPrograma = Convert.ToInt32(item["Programa"]);
                    empleadoPrograma.Sueldo = Convert.ToDecimal(item["Sueldo"]);
                }

                Empleado_BL empleadoBL = new Empleado_BL();

                if (IDSN.Text == "")
                {
                    empleadoBL.InsertarEmpleado(empleado);
                }
                else {
                    empleado.IDSN =Convert.ToInt32(IDSN.Text);
                    empleadoBL.ActualizarEmpleado(empleado);
                }
                



                Response.Redirect("FrmSocioNegocio.aspx");
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.InnerException.Message.ToString();
            }
            

        }

     

    }
}